{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "toc_visible": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "<table class=\"tfo-notebook-buttons\" align=\"left\">\n",
        "  <td>\n",
        "    <a target=\"_blank\" href=\"https://colab.research.google.com/github/google-research-datasets/scin/blob/main/scin_demo.ipynb\"><img src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" />Run in Google Colab</a>\n",
        "  </td>\n",
        "  <td>\n",
        "    <a target=\"_blank\" href=\"https://github.com/google-research-datasets/scin/\"><img src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" />View source on GitHub</a>\n",
        "  </td>\n",
        "</table>"
      ],
      "metadata": {
        "id": "ZLbd9d_W45WS"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Copyright 2024 Google LLC\n",
        "#\n",
        "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
        "# you may not use this file except in compliance with the License.\n",
        "# You may obtain a copy of the License at\n",
        "#\n",
        "#     https://www.apache.org/licenses/LICENSE-2.0\n",
        "#\n",
        "# Unless required by applicable law or agreed to in writing, software\n",
        "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
        "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
        "# See the License for the specific language governing permissions and\n",
        "# limitations under the License."
      ],
      "metadata": {
        "id": "QwG4a9hAfSbB"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "yLYdRB_HCuqy"
      },
      "source": [
        "## SCIN dataset demo\n",
        "\n",
        "This colab demos how to load the SCIN dataset from the CSV files in Google Cloud Storage.\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "BALFRUdPC2Zv"
      },
      "source": [
        "## Setup"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "4aj1x2l7JFMT"
      },
      "outputs": [],
      "source": [
        "#@title Install the required packages\n",
        "\n",
        "!pip install matplotlib google-cloud-storage"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "JoXzQ_iiC13S"
      },
      "outputs": [],
      "source": [
        "#@title Imports\n",
        "\n",
        "import collections\n",
        "import copy\n",
        "import hashlib\n",
        "import io\n",
        "import os\n",
        "import subprocess\n",
        "import textwrap\n",
        "import time\n",
        "\n",
        "from typing import List, Text\n",
        "\n",
        "from PIL import Image\n",
        "\n",
        "import numpy as np\n",
        "import pandas as pd\n",
        "import tabulate\n",
        "\n",
        "\n",
        "import tensorflow as tf\n",
        "\n",
        "import matplotlib.pyplot as plt\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "a06xhERbI8UJ"
      },
      "source": [
        "### Authenticate\n",
        "\n",
        "\n",
        "The following cell is for Colab only. If running elsewhere, authenticate with the [gcloud CLI](https://cloud.google.com/sdk/gcloud/reference/auth/login)."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "H6pUpJPdI7Y5"
      },
      "outputs": [],
      "source": [
        "from google.colab import auth\n",
        "\n",
        "# Authenticate user for access. There will be a popup asking you to sign in with your user and approve access.\n",
        "auth.authenticate_user()"
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "### Configuration"
      ],
      "metadata": {
        "id": "bs3OnHe-0o8f"
      }
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "OxzYsc8NDpwa",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "cdc7a1de-32bc-41e0-f6e4-d568e4786f11"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "GCS bucket name: dx-scin-public-data\n",
            "cases_csv: dataset/scin_cases.csv\n",
            "labels_csv: dataset/scin_labels.csv\n",
            "images dir: dataset/images/\n"
          ]
        }
      ],
      "source": [
        "#@title Global params\n",
        "\n",
        "class Globals:\n",
        "  # GCP project with GCS bucket of interest\n",
        "  gcp_project = 'dx-scin-public' #@param\n",
        "\n",
        "  # GCS bucket with data to read\n",
        "  gcs_bucket_name = 'dx-scin-public-data' #@param\n",
        "\n",
        "  # CSV of case metadata to read\n",
        "  cases_csv = 'dataset/scin_cases.csv' #@param\n",
        "\n",
        "  # CSV of label metadata to read\n",
        "  labels_csv = 'dataset/scin_labels.csv' #@param\n",
        "\n",
        "  # Images directory\n",
        "  gcs_images_dir = 'dataset/images/' #@param\n",
        "\n",
        "  ### Key column names\n",
        "  image_path_columns = ['image_1_path', 'image_2_path', 'image_3_path']\n",
        "  weighted_skin_condition_label = \"weighted_skin_condition_label\"\n",
        "  skin_condition_label = \"dermatologist_skin_condition_on_label_name\"\n",
        "\n",
        "  ###### Formed during execution:\n",
        "\n",
        "  # Client for querying GCS\n",
        "  gcs_storage_client = None\n",
        "\n",
        "  # Bucket object for loading files\n",
        "  gcs_bucket = None\n",
        "\n",
        "  # pd.DataFrame for the loaded metadata_csv\n",
        "  cases_df = None\n",
        "\n",
        "  # pd.DataFrame for the loaded labels_csv\n",
        "  cases_and_labels_df = None\n",
        "\n",
        "print(f'GCS bucket name: {Globals.gcs_bucket_name}')\n",
        "print(f'cases_csv: {Globals.cases_csv}')\n",
        "print(f'labels_csv: {Globals.labels_csv}')\n",
        "print(f'images dir: {Globals.gcs_images_dir}')\n"
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Load dataset"
      ],
      "metadata": {
        "id": "pafH9XkH0xav"
      }
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "V-f7ak5zCuXr",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "19b6a949-25a1-4b02-81f3-ae8915a13c32"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "5033\n"
          ]
        }
      ],
      "source": [
        "#@title Create a dataframe that contains the metadata and condition labels\n",
        "\n",
        "from google.cloud import storage\n",
        "\n",
        "def list_blobs(storage_client, bucket_name):\n",
        "  \"\"\"Helper to list blobs in a bucket (useful for debugging).\"\"\"\n",
        "  blobs = storage_client.list_blobs(bucket_name)\n",
        "  for blob in blobs:\n",
        "    print(blob)\n",
        "\n",
        "def initialize_df_with_metadata(bucket, csv_path):\n",
        "  \"\"\"Loads the given CSV into a pd.DataFrame.\"\"\"\n",
        "  df = pd.read_csv(io.BytesIO(bucket.blob(csv_path).download_as_string()), dtype={'case_id': str})\n",
        "  df['case_id'] = df['case_id'].astype(str)\n",
        "  return df\n",
        "\n",
        "def augment_metadata_with_labels(df, bucket, csv_path):\n",
        "  \"\"\"Loads the given CSV into a pd.DataFrame.\"\"\"\n",
        "  labels_df = pd.read_csv(io.BytesIO(bucket.blob(csv_path).download_as_string()), dtype={'case_id': str})\n",
        "  labels_df['case_id'] = labels_df['case_id'].astype(str)\n",
        "  merged_df = pd.merge(df, labels_df, on='case_id')\n",
        "  return merged_df\n",
        "\n",
        "Globals.gcs_storage_client = storage.Client(Globals.gcp_project)\n",
        "Globals.gcs_bucket = Globals.gcs_storage_client.bucket(\n",
        "    Globals.gcs_bucket_name\n",
        ")\n",
        "Globals.cases_df = initialize_df_with_metadata(Globals.gcs_bucket, Globals.cases_csv)\n",
        "Globals.cases_and_labels_df = augment_metadata_with_labels(Globals.cases_df, Globals.gcs_bucket, Globals.labels_csv)\n",
        "print(len(Globals.cases_and_labels_df))"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "Globals.cases_and_labels_df.columns"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "iyR7ZFJvQ2BY",
        "outputId": "3c83bb87-bdf3-4117-81a3-ff11f358acae"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "Index(['case_id', 'source', 'release', 'year', 'age_group', 'sex_at_birth',\n",
              "       'fitzpatrick_skin_type',\n",
              "       'race_ethnicity_american_indian_or_alaska_native',\n",
              "       'race_ethnicity_asian', 'race_ethnicity_black_or_african_american',\n",
              "       'race_ethnicity_hispanic_latino_or_spanish_origin',\n",
              "       'race_ethnicity_middle_eastern_or_north_african',\n",
              "       'race_ethnicity_native_hawaiian_or_pacific_islander',\n",
              "       'race_ethnicity_white', 'race_ethnicity_other_race',\n",
              "       'race_ethnicity_prefer_not_to_answer', 'textures_raised_or_bumpy',\n",
              "       'textures_flat', 'textures_rough_or_flaky', 'textures_fluid_filled',\n",
              "       'body_parts_head_or_neck', 'body_parts_arm', 'body_parts_palm',\n",
              "       'body_parts_back_of_hand', 'body_parts_torso_front',\n",
              "       'body_parts_torso_back', 'body_parts_genitalia_or_groin',\n",
              "       'body_parts_buttocks', 'body_parts_leg', 'body_parts_foot_top_or_side',\n",
              "       'body_parts_foot_sole', 'body_parts_other',\n",
              "       'condition_symptoms_bothersome_appearance',\n",
              "       'condition_symptoms_bleeding', 'condition_symptoms_increasing_size',\n",
              "       'condition_symptoms_darkening', 'condition_symptoms_itching',\n",
              "       'condition_symptoms_burning', 'condition_symptoms_pain',\n",
              "       'condition_symptoms_no_relevant_experience', 'other_symptoms_fever',\n",
              "       'other_symptoms_chills', 'other_symptoms_fatigue',\n",
              "       'other_symptoms_joint_pain', 'other_symptoms_mouth_sores',\n",
              "       'other_symptoms_shortness_of_breath',\n",
              "       'other_symptoms_no_relevant_symptoms', 'related_category',\n",
              "       'condition_duration', 'image_1_path', 'image_2_path', 'image_3_path',\n",
              "       'image_1_shot_type', 'image_2_shot_type', 'image_3_shot_type',\n",
              "       'combined_race', 'race_ethnicity_two_or_more_after_mitigation',\n",
              "       'dermatologist_gradable_for_skin_condition_1',\n",
              "       'dermatologist_gradable_for_skin_condition_2',\n",
              "       'dermatologist_gradable_for_skin_condition_3',\n",
              "       'dermatologist_skin_condition_on_label_name',\n",
              "       'dermatologist_skin_condition_confidence',\n",
              "       'weighted_skin_condition_label',\n",
              "       'dermatologist_gradable_for_fitzpatrick_skin_type_1',\n",
              "       'dermatologist_gradable_for_fitzpatrick_skin_type_2',\n",
              "       'dermatologist_gradable_for_fitzpatrick_skin_type_3',\n",
              "       'dermatologist_fitzpatrick_skin_type_label_1',\n",
              "       'dermatologist_fitzpatrick_skin_type_label_2',\n",
              "       'dermatologist_fitzpatrick_skin_type_label_3',\n",
              "       'gradable_for_monk_skin_tone_india', 'gradable_for_monk_skin_tone_us',\n",
              "       'monk_skin_tone_label_india', 'monk_skin_tone_label_us'],\n",
              "      dtype='object')"
            ]
          },
          "metadata": {},
          "execution_count": 164
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "Globals.cases_and_labels_df.sample(1)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 130
        },
        "id": "FqkyiDhhLLlY",
        "outputId": "7d818657-53d0-49ef-b98f-9c5d5acc7545"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "                   case_id source release  year    age_group  \\\n",
              "1264  -5156441036700827606   SCIN   1.0.0  2023  AGE_UNKNOWN   \n",
              "\n",
              "              sex_at_birth fitzpatrick_skin_type  \\\n",
              "1264  OTHER_OR_UNSPECIFIED                   NaN   \n",
              "\n",
              "     race_ethnicity_american_indian_or_alaska_native race_ethnicity_asian  \\\n",
              "1264                                             NaN                  NaN   \n",
              "\n",
              "     race_ethnicity_black_or_african_american  ...  \\\n",
              "1264                                      NaN  ...   \n",
              "\n",
              "     dermatologist_gradable_for_fitzpatrick_skin_type_1  \\\n",
              "1264                                                YES   \n",
              "\n",
              "     dermatologist_gradable_for_fitzpatrick_skin_type_2  \\\n",
              "1264                                                NaN   \n",
              "\n",
              "     dermatologist_gradable_for_fitzpatrick_skin_type_3  \\\n",
              "1264                                                NaN   \n",
              "\n",
              "     dermatologist_fitzpatrick_skin_type_label_1  \\\n",
              "1264                                        FST3   \n",
              "\n",
              "     dermatologist_fitzpatrick_skin_type_label_2  \\\n",
              "1264                                         NaN   \n",
              "\n",
              "     dermatologist_fitzpatrick_skin_type_label_3  \\\n",
              "1264                                         NaN   \n",
              "\n",
              "     gradable_for_monk_skin_tone_india gradable_for_monk_skin_tone_us  \\\n",
              "1264                              True                           True   \n",
              "\n",
              "     monk_skin_tone_label_india monk_skin_tone_label_us  \n",
              "1264                        3.0                     4.0  \n",
              "\n",
              "[1 rows x 73 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-dd120c2b-8b01-4c34-a593-58283c85ac12\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>case_id</th>\n",
              "      <th>source</th>\n",
              "      <th>release</th>\n",
              "      <th>year</th>\n",
              "      <th>age_group</th>\n",
              "      <th>sex_at_birth</th>\n",
              "      <th>fitzpatrick_skin_type</th>\n",
              "      <th>race_ethnicity_american_indian_or_alaska_native</th>\n",
              "      <th>race_ethnicity_asian</th>\n",
              "      <th>race_ethnicity_black_or_african_american</th>\n",
              "      <th>...</th>\n",
              "      <th>dermatologist_gradable_for_fitzpatrick_skin_type_1</th>\n",
              "      <th>dermatologist_gradable_for_fitzpatrick_skin_type_2</th>\n",
              "      <th>dermatologist_gradable_for_fitzpatrick_skin_type_3</th>\n",
              "      <th>dermatologist_fitzpatrick_skin_type_label_1</th>\n",
              "      <th>dermatologist_fitzpatrick_skin_type_label_2</th>\n",
              "      <th>dermatologist_fitzpatrick_skin_type_label_3</th>\n",
              "      <th>gradable_for_monk_skin_tone_india</th>\n",
              "      <th>gradable_for_monk_skin_tone_us</th>\n",
              "      <th>monk_skin_tone_label_india</th>\n",
              "      <th>monk_skin_tone_label_us</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>1264</th>\n",
              "      <td>-5156441036700827606</td>\n",
              "      <td>SCIN</td>\n",
              "      <td>1.0.0</td>\n",
              "      <td>2023</td>\n",
              "      <td>AGE_UNKNOWN</td>\n",
              "      <td>OTHER_OR_UNSPECIFIED</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>...</td>\n",
              "      <td>YES</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>FST3</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>True</td>\n",
              "      <td>True</td>\n",
              "      <td>3.0</td>\n",
              "      <td>4.0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>1 rows × 73 columns</p>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-dd120c2b-8b01-4c34-a593-58283c85ac12')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-dd120c2b-8b01-4c34-a593-58283c85ac12 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-dd120c2b-8b01-4c34-a593-58283c85ac12');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "dataframe"
            }
          },
          "metadata": {},
          "execution_count": 165
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Get familiar with the data"
      ],
      "metadata": {
        "id": "F3nCxneZMIrv"
      }
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "F6cmJGtjMf0o"
      },
      "outputs": [],
      "source": [
        "#@title Display the images for a case (and condition labels, optionally)\n",
        "import random\n",
        "\n",
        "import io\n",
        "import numpy as np\n",
        "from PIL import Image\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "def display_image(bucket, image_path):\n",
        "  image = Image.open(io.BytesIO(bucket.blob(image_path).download_as_string()))\n",
        "  figure_size=4\n",
        "  f, axarr = plt.subplots(1, 1, figsize = (figure_size, figure_size))\n",
        "  axarr.imshow(image, cmap='gray')\n",
        "  axarr.axis('off')\n",
        "  plt.show()\n",
        "\n",
        "def display_images_for_case(df, case_id=\"\", print_condition_labels=True):\n",
        "  # Use a random case if none is provided:\n",
        "  if case_id:\n",
        "    matched_df = df[df['case_id'] == case_id]\n",
        "  else:\n",
        "    matched_df = df.sample(1)\n",
        "\n",
        "  image_paths = matched_df[Globals.image_path_columns].values.tolist()[0]\n",
        "  for path in image_paths:\n",
        "    if isinstance(path, str):\n",
        "      display_image(Globals.gcs_bucket, path)\n",
        "  if print_condition_labels:\n",
        "    condition_labels = matched_df[[Globals.weighted_skin_condition_label]].values.tolist()[0]\n",
        "    for label in condition_labels:\n",
        "      if isinstance(label, str):\n",
        "        print(label)\n",
        "\n",
        "# display_images_for_case(Globals.cases_and_labels_df, \"-1000600354148496558\")\n",
        "display_images_for_case(Globals.cases_and_labels_df)\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "99H4e7abMar4",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "b0c2fc9a-6b65-42c7-c8b9-445b97fe2edf"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Num cases: 5033\n",
            "Num cases with image_1_path set: 5033\n",
            "Num cases with image_2_path set: 3085\n",
            "Num cases with image_3_path set: 2289\n",
            "Total images: 10407\n",
            "\n",
            "Self-reported Sex at Birth:\n",
            "  FEMALE 1666 (33.1%)\n",
            "  MALE 807 (16.0%)\n",
            "  OTHER_OR_UNSPECIFIED 2559 (50.9%)\n",
            "\n",
            "Self-reported Fitzpatrick Skin Type:\n",
            "  FST1 188 (7.5%)\n",
            "  FST2 542 (21.7%)\n",
            "  FST3 661 (26.4%)\n",
            "  FST4 427 (17.1%)\n",
            "  FST5 214 (8.5%)\n",
            "  FST6 143 (5.7%)\n",
            "  NONE_IDENTIFIED 328 (13.1%)\n"
          ]
        }
      ],
      "source": [
        "#@title Print metadata stats\n",
        "def print_metadata_stats(df: pd.DataFrame) -> None:\n",
        "  print(f'Num cases: {len(df)}')\n",
        "\n",
        "  # Number of cases with 1, 2, or 3 images\n",
        "  image_1_cnt = df[\"image_1_path\"].count()\n",
        "  image_2_cnt = df[\"image_2_path\"].count()\n",
        "  image_3_cnt = df[\"image_3_path\"].count()\n",
        "  print(f'Num cases with image_1_path set: {image_1_cnt}')\n",
        "  print(f'Num cases with image_2_path set: {image_2_cnt}')\n",
        "  print(f'Num cases with image_3_path set: {image_3_cnt}')\n",
        "  print(f'Total images: {image_1_cnt + image_2_cnt + image_3_cnt}')\n",
        "\n",
        "  # Sex at birth:\n",
        "  print('\\nSelf-reported Sex at Birth:')\n",
        "  sab = collections.Counter(df['sex_at_birth'].dropna())\n",
        "  total = sum(sab.values())\n",
        "  for k in sorted(sab):\n",
        "    print(f'  {k} {sab[k]} ({100.0*sab[k]/total:.1f}%)')\n",
        "\n",
        "  # FST distribution:\n",
        "  print('\\nSelf-reported Fitzpatrick Skin Type:')\n",
        "  fst = collections.Counter(df['fitzpatrick_skin_type'].dropna())\n",
        "  total = sum(fst.values())\n",
        "  for k in sorted(fst):\n",
        "    print(f'  {k} {fst[k]} ({100.0*fst[k]/total:.1f}%)')\n",
        "\n",
        "\n",
        "print_metadata_stats(Globals.cases_and_labels_df)"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "#@title Add combined_race_ethnicity column\n",
        "\n",
        "def merge_race_ethnicity_columns(row):\n",
        "  combined = []\n",
        "  for col in row.keys():\n",
        "    if col.startswith(\"race_ethnicity_\") and row[col] == 'YES':\n",
        "      combined.append(col[len(\"race_ethnicity_\"):])\n",
        "  return \",\".join(combined)\n",
        "\n",
        "Globals.cases_and_labels_df[\"combined_race_ethnicity\"] = Globals.cases_and_labels_df.apply(merge_race_ethnicity_columns, axis=1)\n",
        "Globals.cases_and_labels_df[[\"case_id\", \"combined_race_ethnicity\"]]"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 424
        },
        "id": "bKB4KtMMRnsK",
        "outputId": "5c5a25d5-a581-4084-9757-7b02be55a02f"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "                   case_id            combined_race_ethnicity\n",
              "0     -1000600354148496558                                   \n",
              "1     -1002039107727665188                                   \n",
              "2     -1003358831658393077  hispanic_latino_or_spanish_origin\n",
              "3     -1003826561155964328                                   \n",
              "4     -1003844406100696311                              white\n",
              "...                    ...                                ...\n",
              "5028    973759811984683137       two_or_more_after_mitigation\n",
              "5029    973872028150293734                                   \n",
              "5030    983265958160210646          black_or_african_american\n",
              "5031    995820220956352730       two_or_more_after_mitigation\n",
              "5032    998890198757718998   american_indian_or_alaska_native\n",
              "\n",
              "[5033 rows x 2 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-abb60af2-a0f2-4b9e-be9f-76d0ab21b73a\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>case_id</th>\n",
              "      <th>combined_race_ethnicity</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>-1000600354148496558</td>\n",
              "      <td></td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>-1002039107727665188</td>\n",
              "      <td></td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>-1003358831658393077</td>\n",
              "      <td>hispanic_latino_or_spanish_origin</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>-1003826561155964328</td>\n",
              "      <td></td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>-1003844406100696311</td>\n",
              "      <td>white</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>...</th>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5028</th>\n",
              "      <td>973759811984683137</td>\n",
              "      <td>two_or_more_after_mitigation</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5029</th>\n",
              "      <td>973872028150293734</td>\n",
              "      <td></td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5030</th>\n",
              "      <td>983265958160210646</td>\n",
              "      <td>black_or_african_american</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5031</th>\n",
              "      <td>995820220956352730</td>\n",
              "      <td>two_or_more_after_mitigation</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5032</th>\n",
              "      <td>998890198757718998</td>\n",
              "      <td>american_indian_or_alaska_native</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>5033 rows × 2 columns</p>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-abb60af2-a0f2-4b9e-be9f-76d0ab21b73a')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-abb60af2-a0f2-4b9e-be9f-76d0ab21b73a button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-abb60af2-a0f2-4b9e-be9f-76d0ab21b73a');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "<div id=\"df-841d7c38-bc5f-44f5-922d-0ebdd4a09cec\">\n",
              "  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-841d7c38-bc5f-44f5-922d-0ebdd4a09cec')\"\n",
              "            title=\"Suggest charts\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "  </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "  <script>\n",
              "    async function quickchart(key) {\n",
              "      const quickchartButtonEl =\n",
              "        document.querySelector('#' + key + ' button');\n",
              "      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "      quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "      try {\n",
              "        const charts = await google.colab.kernel.invokeFunction(\n",
              "            'suggestCharts', [key], {});\n",
              "      } catch (error) {\n",
              "        console.error('Error during call to suggestCharts:', error);\n",
              "      }\n",
              "      quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "    }\n",
              "    (() => {\n",
              "      let quickchartButtonEl =\n",
              "        document.querySelector('#df-841d7c38-bc5f-44f5-922d-0ebdd4a09cec button');\n",
              "      quickchartButtonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "    })();\n",
              "  </script>\n",
              "</div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "dataframe",
              "summary": "{\n  \"name\": \"Globals\",\n  \"rows\": 5033,\n  \"fields\": [\n    {\n      \"column\": \"case_id\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 5033,\n        \"samples\": [\n          \"-821110872479093372\",\n          \"-6810148049730008082\",\n          \"2968650902364227344\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"combined_race_ethnicity\",\n      \"properties\": {\n        \"dtype\": \"category\",\n        \"num_unique_values\": 16,\n        \"samples\": [\n          \"\",\n          \"hispanic_latino_or_spanish_origin\",\n          \"hispanic_latino_or_spanish_origin,white\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}"
            }
          },
          "metadata": {},
          "execution_count": 168
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "#@title Print race/ethnicity distribution\n",
        "\n",
        "def print_race_ethnicity_dist(df):\n",
        "  c = collections.Counter(df['combined_race_ethnicity'].dropna())\n",
        "  total = sum(c.values())\n",
        "  for k in sorted(c):\n",
        "    if not k:\n",
        "      k = 'unspecified'\n",
        "    print(f'  {k}: {c[k]} ({100.0*c[k]/total:.1f}%)')\n",
        "\n",
        "print_race_ethnicity_dist(Globals.cases_and_labels_df)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "cSslwh9jR09w",
        "outputId": "eb92f5a1-4ef4-4e78-973a-9475efd37329"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  unspecified: 0 (0.0%)\n",
            "  american_indian_or_alaska_native: 48 (1.0%)\n",
            "  american_indian_or_alaska_native,white: 25 (0.5%)\n",
            "  asian: 85 (1.7%)\n",
            "  asian,white: 11 (0.2%)\n",
            "  black_or_african_american: 267 (5.3%)\n",
            "  black_or_african_american,hispanic_latino_or_spanish_origin: 11 (0.2%)\n",
            "  black_or_african_american,white: 20 (0.4%)\n",
            "  hispanic_latino_or_spanish_origin: 224 (4.5%)\n",
            "  hispanic_latino_or_spanish_origin,white: 55 (1.1%)\n",
            "  middle_eastern_or_north_african: 7 (0.1%)\n",
            "  native_hawaiian_or_pacific_islander: 4 (0.1%)\n",
            "  other_race: 16 (0.3%)\n",
            "  prefer_not_to_answer: 34 (0.7%)\n",
            "  two_or_more_after_mitigation: 83 (1.6%)\n",
            "  white: 1762 (35.0%)\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Skin Condition label information"
      ],
      "metadata": {
        "id": "h9XQRnc4MEOz"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "#@title Print condition distribution\n",
        "\n",
        "def print_condition_distribution(df, top_n_conditions=50):\n",
        "  # Any condition that shows up in a label\n",
        "  condition_ctr = collections.Counter()\n",
        "  print(f'Distribution of conditions in \"{Globals.skin_condition_label}\" column:')\n",
        "  for entry in df[Globals.skin_condition_label].dropna():\n",
        "    condition_ctr.update(eval(entry))\n",
        "  for condition, cnt in condition_ctr.most_common()[:top_n_conditions]:\n",
        "    print(f'  {condition}: {cnt}')\n",
        "  print(f'Distribution of conditions in \"{Globals.weighted_skin_condition_label}\" column:')\n",
        "  weighted_condition_ctr = collections.Counter()\n",
        "  for entry in df[Globals.weighted_skin_condition_label].dropna():\n",
        "    weighted_condition_ctr.update(eval(entry).keys())\n",
        "  for condition, cnt in weighted_condition_ctr.most_common()[:top_n_conditions]:\n",
        "    print(f'  {condition}: {cnt}')\n",
        "\n",
        "print_condition_distribution(Globals.cases_and_labels_df)\n"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "3wVGShW3R7E5",
        "outputId": "ff20b6f1-8c0a-4d3d-ab25-75ff01f9503e"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Distribution of conditions in \"dermatologist_skin_condition_on_label_name\" column:\n",
            "  Eczema: 1211\n",
            "  Allergic Contact Dermatitis: 952\n",
            "  Insect Bite: 449\n",
            "  Urticaria: 377\n",
            "  Psoriasis: 348\n",
            "  Folliculitis: 297\n",
            "  Irritant Contact Dermatitis: 254\n",
            "  Tinea: 232\n",
            "  Herpes Zoster: 157\n",
            "  Drug Rash: 156\n",
            "  Herpes Simplex: 152\n",
            "  Impetigo: 124\n",
            "  Acute dermatitis, NOS: 124\n",
            "  Hypersensitivity: 115\n",
            "  Acne: 109\n",
            "  Pigmented purpuric eruption: 108\n",
            "  Leukocytoclastic Vasculitis: 105\n",
            "  Lichen planus/lichenoid eruption: 94\n",
            "  Pityriasis rosea: 89\n",
            "  Viral Exanthem: 87\n",
            "  Lichen Simplex Chronicus: 85\n",
            "  Stasis Dermatitis: 83\n",
            "  Keratosis pilaris: 72\n",
            "  CD - Contact dermatitis: 70\n",
            "  Scabies: 68\n",
            "  Tinea Versicolor: 68\n",
            "  Granuloma annulare: 65\n",
            "  Molluscum Contagiosum: 64\n",
            "  Rosacea: 57\n",
            "  Abrasion, scrape, or scab: 51\n",
            "  O/E - ecchymoses present: 51\n",
            "  Seborrheic Dermatitis: 50\n",
            "  Acute and chronic dermatitis: 47\n",
            "  Photodermatitis: 45\n",
            "  Cellulitis: 45\n",
            "  Abscess: 43\n",
            "  Verruca vulgaris: 42\n",
            "  SCC/SCCIS: 38\n",
            "  Purpura: 38\n",
            "  Intertrigo: 38\n",
            "  Miliaria: 36\n",
            "  Erythema multiforme: 35\n",
            "  Syphilis: 34\n",
            "  Lichen nitidus: 32\n",
            "  Cutaneous lupus: 32\n",
            "  Inflicted skin lesions: 31\n",
            "  Prurigo nodularis: 30\n",
            "  Perioral Dermatitis: 29\n",
            "  Post-Inflammatory hyperpigmentation: 28\n",
            "  Pityriasis lichenoides: 28\n",
            "Distribution of conditions in \"weighted_skin_condition_label\" column:\n",
            "  Eczema: 1056\n",
            "  Allergic Contact Dermatitis: 873\n",
            "  Insect Bite: 403\n",
            "  Urticaria: 332\n",
            "  Psoriasis: 308\n",
            "  Folliculitis: 268\n",
            "  Irritant Contact Dermatitis: 249\n",
            "  Tinea: 206\n",
            "  Drug Rash: 148\n",
            "  Herpes Zoster: 142\n",
            "  Herpes Simplex: 141\n",
            "  Acute dermatitis, NOS: 124\n",
            "  Impetigo: 121\n",
            "  Hypersensitivity: 113\n",
            "  Leukocytoclastic Vasculitis: 99\n",
            "  Acne: 98\n",
            "  Pigmented purpuric eruption: 98\n",
            "  Lichen planus/lichenoid eruption: 89\n",
            "  Viral Exanthem: 82\n",
            "  Pityriasis rosea: 80\n",
            "  Lichen Simplex Chronicus: 78\n",
            "  Stasis Dermatitis: 70\n",
            "  CD - Contact dermatitis: 70\n",
            "  Scabies: 63\n",
            "  Molluscum Contagiosum: 63\n",
            "  Keratosis pilaris: 61\n",
            "  Granuloma annulare: 59\n",
            "  Tinea Versicolor: 53\n",
            "  Rosacea: 52\n",
            "  O/E - ecchymoses present: 50\n",
            "  Abrasion, scrape, or scab: 48\n",
            "  Acute and chronic dermatitis: 47\n",
            "  Seborrheic Dermatitis: 46\n",
            "  Photodermatitis: 43\n",
            "  Abscess: 41\n",
            "  Verruca vulgaris: 40\n",
            "  Cellulitis: 39\n",
            "  SCC/SCCIS: 37\n",
            "  Purpura: 36\n",
            "  Miliaria: 36\n",
            "  Erythema multiforme: 33\n",
            "  Syphilis: 32\n",
            "  Cutaneous lupus: 31\n",
            "  Intertrigo: 31\n",
            "  Inflicted skin lesions: 29\n",
            "  Post-Inflammatory hyperpigmentation: 28\n",
            "  Pityriasis lichenoides: 28\n",
            "  Prurigo nodularis: 27\n",
            "  Lichen nitidus: 27\n",
            "  Chronic dermatitis, NOS: 27\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "#@title Print column names\n",
        "print(Globals.cases_and_labels_df.columns)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "N7H2CAVfiBXu",
        "outputId": "639fe1f0-3e33-4181-894c-19de76ade294"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Index(['case_id', 'source', 'release', 'year', 'age_group', 'sex_at_birth',\n",
            "       'fitzpatrick_skin_type',\n",
            "       'race_ethnicity_american_indian_or_alaska_native',\n",
            "       'race_ethnicity_asian', 'race_ethnicity_black_or_african_american',\n",
            "       'race_ethnicity_hispanic_latino_or_spanish_origin',\n",
            "       'race_ethnicity_middle_eastern_or_north_african',\n",
            "       'race_ethnicity_native_hawaiian_or_pacific_islander',\n",
            "       'race_ethnicity_white', 'race_ethnicity_other_race',\n",
            "       'race_ethnicity_prefer_not_to_answer', 'textures_raised_or_bumpy',\n",
            "       'textures_flat', 'textures_rough_or_flaky', 'textures_fluid_filled',\n",
            "       'body_parts_head_or_neck', 'body_parts_arm', 'body_parts_palm',\n",
            "       'body_parts_back_of_hand', 'body_parts_torso_front',\n",
            "       'body_parts_torso_back', 'body_parts_genitalia_or_groin',\n",
            "       'body_parts_buttocks', 'body_parts_leg', 'body_parts_foot_top_or_side',\n",
            "       'body_parts_foot_sole', 'body_parts_other',\n",
            "       'condition_symptoms_bothersome_appearance',\n",
            "       'condition_symptoms_bleeding', 'condition_symptoms_increasing_size',\n",
            "       'condition_symptoms_darkening', 'condition_symptoms_itching',\n",
            "       'condition_symptoms_burning', 'condition_symptoms_pain',\n",
            "       'condition_symptoms_no_relevant_experience', 'other_symptoms_fever',\n",
            "       'other_symptoms_chills', 'other_symptoms_fatigue',\n",
            "       'other_symptoms_joint_pain', 'other_symptoms_mouth_sores',\n",
            "       'other_symptoms_shortness_of_breath',\n",
            "       'other_symptoms_no_relevant_symptoms', 'related_category',\n",
            "       'condition_duration', 'image_1_path', 'image_2_path', 'image_3_path',\n",
            "       'image_1_shot_type', 'image_2_shot_type', 'image_3_shot_type',\n",
            "       'combined_race', 'race_ethnicity_two_or_more_after_mitigation',\n",
            "       'dermatologist_gradable_for_skin_condition_1',\n",
            "       'dermatologist_gradable_for_skin_condition_2',\n",
            "       'dermatologist_gradable_for_skin_condition_3',\n",
            "       'dermatologist_skin_condition_on_label_name',\n",
            "       'dermatologist_skin_condition_confidence',\n",
            "       'weighted_skin_condition_label',\n",
            "       'dermatologist_gradable_for_fitzpatrick_skin_type_1',\n",
            "       'dermatologist_gradable_for_fitzpatrick_skin_type_2',\n",
            "       'dermatologist_gradable_for_fitzpatrick_skin_type_3',\n",
            "       'dermatologist_fitzpatrick_skin_type_label_1',\n",
            "       'dermatologist_fitzpatrick_skin_type_label_2',\n",
            "       'dermatologist_fitzpatrick_skin_type_label_3',\n",
            "       'gradable_for_monk_skin_tone_india', 'gradable_for_monk_skin_tone_us',\n",
            "       'monk_skin_tone_label_india', 'monk_skin_tone_label_us',\n",
            "       'combined_race_ethnicity'],\n",
            "      dtype='object')\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Display distributions of self-reported condition info"
      ],
      "metadata": {
        "id": "-tZExLQSKfSK"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "#@title Display body part distribution\n",
        "\n",
        "def get_distribution_columns(df, prefix):\n",
        "  cols = [c for c in df.columns if c.startswith(prefix)]\n",
        "  dist = collections.Counter()\n",
        "  for c in cols:\n",
        "    name = c[len(prefix):]\n",
        "    val = sum(df[c] == \"YES\")\n",
        "    dist[name] = val\n",
        "  return dist\n",
        "\n",
        "def get_distribution_and_display(df, prefix):\n",
        "  ctr = get_distribution_columns(df, prefix)\n",
        "  dist = dict(ctr.most_common())\n",
        "  print(f'Distribution data: {dist}')\n",
        "  names = list(dist.keys())\n",
        "  counts = list(dist.values())\n",
        "  plt.bar(names, counts)\n",
        "  plt.xticks(rotation=90)  # Rotate labels by 90 degrees\n",
        "  plt.show()\n",
        "\n",
        "# Distribution data: {'arm': 1707, 'leg': 1694, 'torso_front': 795, 'head_or_neck': 737, 'torso_back': 652, 'other': 543, 'back_of_hand': 521, 'foot_top_or_side': 415, 'buttocks': 391, 'genitalia_or_groin': 222, 'palm': 215, 'foot_sole': 104}\n",
        "get_distribution_and_display(Globals.cases_and_labels_df, \"body_parts_\")\n"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 577
        },
        "id": "JSp6JNh6KbwF",
        "outputId": "30334f15-d4ac-4fd2-a28d-23fe27b759e6"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Distribution data: {'arm': 1707, 'leg': 1694, 'torso_front': 795, 'head_or_neck': 737, 'torso_back': 652, 'other': 543, 'back_of_hand': 521, 'foot_top_or_side': 415, 'buttocks': 391, 'genitalia_or_groin': 222, 'palm': 215, 'foot_sole': 104}\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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wdnZGevXr5e2ubm5Sf8thMDSpUsxY8YM9O7dGwCwceNG2NvbY+fOnRg0aBDOnTuH8PBwnDhxAp6engCA5cuXo3v37li4cCGcnJzKOzYRERGpSLmfgdm9ezc8PT3x7rvvws7ODi1btsR3330n7b969SpSU1Ph7e0tbbOyskLbtm0RHR0NAIiOjoa1tbVUXgDA29sbBgYGiImJKfV1Hz16hOzsbJ0HERERVU7lXmCuXLmCb7/9FvXr18fvv/+OsWPHYsKECdiwYQMAIDU1FQBgb2+v83H29vbSvtTUVNjZ2ensNzIygo2NjXTMk4KDg2FlZSU9nJ2dy/tLIyIiIoUo9wJTWFiIVq1a4csvv0TLli0xZswYjB49GqGhoeX9UjqmT5+OrKws6ZGSklKhr0dERETyKfcC4+joiCZNmuhsa9y4MZKTkwEADg4OAIC0tDSdY9LS0qR9Dg4OSE9P19mfn5+PjIwM6ZgnmZqaQqvV6jyIiIiocir3AtO+fXskJSXpbLtw4QJq164NoGhAr4ODAyIiIqT92dnZiImJgZeXFwDAy8sLmZmZiIuLk46JjIxEYWEh2rZtW96RiYiISGXK/S6kyZMn49VXX8WXX36JAQMG4Pjx41i9ejVWr14NANBoNJg0aRI+//xz1K9fH25ubpg5cyacnJzQp08fAEVnbLp27SpdesrLy0NAQAAGDRrEO5CIiIio/AvMK6+8gh07dmD69OmYN28e3NzcsHTpUvj6+krHfPTRR7h37x7GjBmDzMxMvPbaawgPD4eZmZl0zKZNmxAQEIDOnTvDwMAA/fv3x7Jly8o7LhEREalQuRcYAHj77bfx9ttvP3W/RqPBvHnzMG/evKceY2Njg82bN1dEPCIiIlI5roVEREREqsMCQ0RERKrDAkNERESqwwJDREREqsMCQ0RERKpTIXchEVHl5TrtV1le99r8HrK8LhEpE8/AEBERkeqwwBAREZHqsMAQERGR6rDAEBERkepwEC8RVQocXEz078IzMERERKQ6LDBERESkOiwwREREpDosMERERKQ6LDBERESkOiwwREREpDosMERERKQ6LDBERESkOiwwREREpDosMERERKQ6LDBERESkOiwwREREpDosMERERKQ6LDBERESkOiwwREREpDosMERERKQ6LDBERESkOiwwREREpDosMERERKQ6LDBERESk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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "#@title Display texture distribution\n",
        "get_distribution_and_display(Globals.cases_and_labels_df, \"textures_\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 552
        },
        "id": "3dO9FZbvKkfO",
        "outputId": "ed27747b-c5a4-496e-aa39-8a1f4ac6b6b7"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Distribution data: {'raised_or_bumpy': 2915, 'rough_or_flaky': 1032, 'flat': 822, 'fluid_filled': 629}\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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3bo3jWnevLmCgoLuezbkTnBwsDZv3uxeEPhLLpdLNptNZcqUUXJysgXpcK8GDhyo9PR07dixQ82aNdOnn36qtLQ0vfnmm5o8ebLV8XCP2rVrpyNHjmjmzJk6dOiQpJ9/CenXrx8zMPeAGRgv8P777+sPf/iDihQpYnUU5LFJkyZpyJAhN+2/fv26unbtqg8//NCCVMitsmXL6rPPPtNjjz0mu92ur776SlWrVtWKFSs0ceJEbd261eqIgOVYA+MFXnzxRXd5OXXqlE6dOmVxIuSVSZMmae7cuR77rl+/rs6dOyspKcmaUMi1S5cuua/3UqJECZ07d06SVKtWLe3evdvKaMil//znP+ratasef/xxfffdd5J+/iWTUppzFBgvcO3aNf3lL3+Rw+FQhQoVVKFCBTkcDo0cOVJZWVlWx0MurFq1SoMHD9bHH38s6efP+g9/+IMOHDjgcf0JmKVatWo6fPiwJKlOnTr6+9//ru+++06zZs1S2bJlLU6He/XJJ58oOjpaRYsW1e7du3X16lVJP1+r66233rI4nYFcKPD69evnCg4Ods2aNcu1Z88e1549e1yzZs1yhYaGuvr162d1POTShg0bXIGBga7PPvvM9fTTT7siIyNdqampVsdCLrz//vuu+fPnu1wul+urr75ylS5d2uXj4+MqUqSIa8mSJdaGwz2rW7eua+HChS6Xy+UqXry46/jx4y6Xy+XavXu3KyQkxMpoRmINjBdwOBxasmSJ2rZt67F/9erV6tKlizIyMixKhryyfPly/eEPf1CNGjW0ceNGlS5d2upIyEM3TqcuX748n63BAgICdPDgQVWoUEGBgYHas2ePKlWqpBMnTigyMlJXrlyxOqJROAvJC/j7+6tChQo37a9YsaL8/PzufyDkSseOHW+5v0yZMgoKClLfvn3d+/71r3/dr1jIRwEBAapfv77VMZBLoaGhOnbs2E1/H2/dulWVKlWyJpTBKDBeoH///nrjjTc0f/58+fv7S5KuXr2qv/71r+rfv7/F6ZBTDofjlvujo6PvcxLkpbi4uLseO2XKlHxMgvzSp08fvfrqq5o3b55sNptOnz6thIQEDR48WH/5y1+sjmccvkLyAr///e+1YcMG+fv7q06dOpKkPXv2KDMzUy1btvQYy2/sgDVKlCihmjVrqlChQrLZbLrdX802m00bN268z+mQ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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "#@title Display condition symptom dist\n",
        "get_distribution_and_display(Globals.cases_and_labels_df, \"condition_symptoms_\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 626
        },
        "id": "U-UFg7SJKnx2",
        "outputId": "a7ae55f0-f7c7-4e19-a857-6050e41efa1f"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Distribution data: {'itching': 2712, 'bothersome_appearance': 1530, 'increasing_size': 1013, 'burning': 988, 'pain': 734, 'darkening': 385, 'no_relevant_experience': 308, 'bleeding': 225}\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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nq6jOJyjZN7ztFqtunz5sqpVq3bX44pkgalSpYpKliyps2fP2m0/e/as/Pz88vwcd3d3ubu7223z8vIqrIiFzsPDw1TfcAVRHM5R4jxdDefpOorDOUrmPE9PT88/PaZITuJ1c3NT8+bNtWHDBtu27OxsbdiwQaGhoQYmAwAARUGRHIGRpKioKD3//PNq0aKFWrZsqenTp+vKlSvq37+/0dEAAIDBimyB6dWrl86fP69x48YpJSVFDzzwgNatWydfX1+joxUqd3d3jR8/PtflMFdSHM5R4jxdDefpOorDOUquf54Wq/XP7lMCAAAoWorkHBgAAIC7ocAAAADTocAAAADTocAAAADTocAAAADTocAAAADTKbLrwAAACt/q1avz3G6xWFSmTBnVrl1bQUFBTk4F/DnWgYFTpaamauXKlUpKStLw4cPl7e2tPXv2yNfXV9WrVzc6nkMkJSXps88+U1JSkj788EP5+Pjo22+/VY0aNdSoUSOj4zlEzuPu/8hiscjd3V1ubm5OTlQ4zp49q2HDhmnDhg06d+6c/vh2mZWVZVAyxylRooQsFkuuc8vZZrFY9PDDD+vLL79UpUqVDErpOJ9//rlmz56t48ePKzY2VoGBgZo+fbqCgoLUvXt3o+Pds5CQkDwfYHx7IX3hhRfUrl07A9I5FpeQioBKlSrJ29s716ty5cqqXr26Hn30UX322WdGx7xnCQkJqlu3rt599129//77Sk1NlSStWrVKo0ePNjacg2zcuFHBwcHasWOHVq1apfT0dElSfHy8xo8fb3A6x/Hy8lKlSpVyvby8vFS2bFkFBgZq/Pjxys7ONjrqPXnhhRe0Z88ejR07VitXrtSqVavsXq4gJiZGDz74oGJiYnTp0iVdunRJMTExatWqldasWaNNmzbpwoULGjZsmNFR79msWbMUFRWlLl26KDU11VZAvby8NH36dGPDOUinTp107NgxlS9fXu3atVO7du1UoUIFJSUl6cEHH9SZM2cUFhamr776yuio984Kw02bNs1auXJl67PPPmudMWOGdcaMGdZnn33WWqVKFes777xjHThwoNXd3d06d+5co6Pekw4dOliHDx9utVqt1goVKliTkpKsVqvVunXrVmtgYKCByRznoYcesk6dOtVqtdqf444dO6zVq1c3MppDLVy40HrfffdZx4wZY129erV19erV1jFjxlgDAgKsc+bMsb799ttWLy8v6zvvvGN01HtSoUIF6969e42OUagaNWpk3bp1a67tW7ZssTZs2NBqtVqtMTEx1oCAAGdHc7gGDRpYv/jiC6vVav//5759+6yVK1c2MJnjDBw40BodHZ1r+4QJE6wDBw60Wq1W67hx46zNmzd3djSHo8AUAU8++aR11qxZubbPnj3b+uSTT1qtVqt1xowZ1saNGzs7mkN5eHhYjx49arVa7d88Tpw4YXV3dzcymsOUL1/eeuzYMavVan+Ox48fd5lztFqt1vbt21uXL1+ea/vy5cut7du3t1qtVuuiRYus9erVc3Y0h2rQoIF1z549RscoVGXKlLHu27cv1/aEhARrmTJlrFbrrf9Hy5Yt6+xoDlemTBnriRMnrFar/f+fR44csZ2r2Xl4eFgTExNzbU9MTLR6eHhYrVar9eDBg9YKFSo4O5rDcQmpCPjuu+8UFhaWa3uHDh303XffSZK6dOmiY8eOOTuaQ7m7u+c5d+LIkSOqWrWqAYkcz8vLS2fOnMm1fe/evS4zx0eStm3bppCQkFzbQ0JCFBsbK0l6+OGHlZyc7OxoDjV9+nSNGjVKJ06cMDpKoWnevLmGDx+u8+fP27adP39eI0aM0IMPPihJSkxMVEBAgFERHSYoKEhxcXG5tq9bt04NGjRwfqBCUKZMGW3bti3X9m3btqlMmTKSpOzsbNufzYy7kIoAb29vff311xo6dKjd9q+//lre3t6SpCtXrqhixYpGxHOYbt26KTo6WitWrJB0a1JZcnKyRo4cqZ49exqczjF69+6tkSNH6l//+pcsFouys7O1detWDRs2TP369TM6nsMEBARo/vz5mjx5st32+fPn237QXbhwwfSTPnv16qWrV6/q/vvvV7ly5VS6dGm7/RcvXjQomePMnz9f3bt313333Wf7tzt16pRq1aplmyeRnp6uMWPGGBnTIaKiohQREaHr16/LarVq586dWrp0qSZNmqR58+YZHc8hIiMjNWjQIO3evdtWQH/++WfNmzdPf//73yXd+qX5gQceMDClY3AXUhHwySef6JVXXlGXLl3UsmVLSbe+4b755hvNnj1bAwYM0NSpU7Vz504tX77c4LQFd+nSJT311FPatWuXLl++rGrVqiklJUWhoaH65ptvVL58eaMj3rMbN24oIiJCCxYsUFZWlkqVKqWsrCz16dNHCxYsUMmSJY2O6BCrV6/W008/rfr169veJHft2qVDhw5p5cqVevzxxzVr1iwlJiZq2rRpBqctuIULF951//PPP++kJIUrOztb69ev15EjRyRJ9erV02OPPaYSJVxvkH7x4sV68803lZSUJEmqVq2a3nrrLQ0YMMDgZI6zePFiffzxxzp8+LCkW/+ekZGR6tOnjyTp2rVrtruSzIwCU0Rs3bo1z2+4v/zlLwYnc7ytW7cqPj5e6enpatasWZ6Xz8zu1KlT2rdvn9LT0xUSEqI6deoYHcnhjh8/rjlz5tj90Pvb3/6mmjVrGhsM+C9cvXpV6enp8vHxMToKCogCAzjQpk2bVL9+/VxvipmZmYqNjVWbNm0MSob/Vlpamjw8PGx/vpuc48xuw4YNtrVu/njr+6effmpQKsc7fvy4bt68mesXisTERJUuXdqlyveNGzfy/PesUaOGQYkcjzkwRUR2draOHj2a5zecq/zQe+2111S7dm299tprdts//vhjHT161CXWYWjbtq18fX31xRdf6KGHHrJtv3jxotq1a+cSC5/lSE1N1c6dO/P8njXzfJ9KlSrpzJkz8vHxkZeXV56Lgln//wJvrvDv+dZbbyk6OlotWrSQv79/nufrKl544QW9+OKLuQrMjh07NG/ePP3000/GBHOgxMREvfjii7km8rrS92wORmCKgO3bt6tPnz46efJknqthuso3XPXq1bV69Wo1b97cbvuePXvUrVs3/frrrwYlc5wSJUro9ddf19y5czVz5ky98MILkm6t6Orv72/6hd1yfP311+rbt6/S09Pl4eFh90PPYrGYenLrxo0b1bp1a5UqVUobN26867GPPvqok1IVHn9/f02ZMkXPPfec0VEKnYeHh/bs2aPatWvbbT969KhatGhhW1zTzHK+d0eNGpVnIW3atKlByRyPEZgiYNCgQWrRooXWrl3r0r8BXbhwQZ6enrm2e3h46D//+Y8BiRzPYrFo9OjReuSRR9SvXz8lJCRo6tSptn2u4o033tCLL76oiRMnqly5ckbHcajbS4krFJQ/c+PGDZeca5cXi8Wiy5cv59p+6dIll/lFMS4uTrt371b9+vWNjlLoXG+KuQklJiZq4sSJatCggby8vOTp6Wn3chW1a9fWunXrcm3/9ttvVatWLQMSOV7OCNqTTz6pzZs3a+XKlercubNL/GZ3u99++02vvfaay5WXO7l69aoOHTqkhIQEu5crGDhwoJYsWWJ0DKdo06aNJk2aZFdWsrKyNGnSJD388MMGJnOchg0buswvhH+GEZgioFWrVjp69GiuYU1XExUVpcGDB+v8+fNq3769pFuTB6dOneoS81/+KCQkRDt37lSPHj3UoUMHo+M4VHh4uHbt2uUyxfNOzp8/r/79++vbb7/Nc78r/NZ+/fp1zZ07V99//72aNGmSa60bM98G/0fvvvuu2rRpo3r16umRRx6RJG3evFlpaWn64YcfDE7nGO+++65GjBihiRMnKjg4ONe/p6tMPJcoMEVCZGSk3njjDaWkpOT5DdekSRODkjnWiy++qIyMDL3zzjuaMGGCJKlmzZqaNWuWqSd93u75559X2bJlbR/7+flp48aNevnll7Vp0yYDkzlW165dNXz4cP3yyy95fs9269bNoGSONWTIEKWmpmrHjh1q27atvvjiC509e1Zvv/227dKg2SUkJNgWNdu/f7/dPle67CndGp1ISEjQxx9/rPj4eJUtW1b9+vXT4MGDbYuGml3OshR//KWJSbwoFHktFnX7o+xd6Rsux/nz51W2bFlVqFDB6CgogLstcOZK37P+/v766quv1LJlS3l4eGjXrl2qW7euVq9erSlTpmjLli1GRwTsFIeJ5zkYgSkCjh8/bnQEp3OVZx9Jt36Dbdy4sUqUKPGn8yJcZTTNVe6m+jNXrlyxrelTqVIlnT9/XnXr1lVwcLD27NljcDoUhKve/p/DlQrKn6HAFAGBgYFGR3CKs2fPatiwYbYFs/44+GfW39ofeOABpaSkyMfHRw888IBt9CyHq4+mubJ69erp8OHDqlmzppo2bao5c+aoZs2amj17tvz9/Y2OV2BPPvmkFixYIA8PDz355JN3PXbVqlVOSlX4/uz2f7MWmOL4S5REgTHM6tWr1blzZ5UuXVqrV6++67GuMp/ghRdeUHJyssaOHetSt4sfP37cNqLkyqNpM2bM0Msvv6wyZcpoxowZdz32j4sVmtXrr79ue7r4+PHj1alTJ/3zn/+Um5vbnz4nqSjz9PS0/f/nSnc6/hlXvf3/z36JyuFqv0QxB8YgJUqUsH3DFZf5BBUrVtTmzZtd4imoxVFQUJB27dqlypUrKygo6I7HWSwWHTt2zInJnMNqteratWs6dOiQatSooSpVqhgdCflUvnx57du3z+Xunjt58qRq1Kghi8WikydP3vVYVxrxZwTGILdfey0u8wkCAgLy/K3AlSxcuFBVqlRR165dJUkjRozQ3Llz1bBhQy1dutTUbx63jy658kjTH82fP18ffPCBEhMTJUl16tTRkCFDNHDgQIOTIb9c9fb/299XzPwek1+MwMBp1q9fr6lTp9rmEbiievXqadasWWrfvr1iY2PVoUMHTZ8+XWvWrFGpUqVcaj5BcTBu3DhNmzZNkZGRCg0NlSTFxsbq448/1tChQxUdHW1wwnvnqnPT8jJ//nxFR0erf//+LnX7/59NQ7idWc8xLxSYIqI4PA22UqVKunr1qm7evKly5crlevMw8/NzcpQrV852iWHkyJE6c+aMFi1apAMHDqht27Y6f/680REdIisrSwsWLLjj96yrLApWtWpVzZgxQ88884zd9qVLlyoyMtIlVjzt3LmzkpOTNXjw4DznpnXv3t2gZI7nqpfr/3heed1IkMOs55gXLiEVAcXlabCuuNruH1WoUEEXLlxQjRo1tH79ekVFRUmSypQpo2vXrhmcznFef/11LViwQF27dlXjxo1d9ns2MzNTLVq0yLW9efPmunnzpgGJHG/Lli3FZm6aq16uv/28vv/+e40cOVITJ060GzUcM2aMJk6caFTEQsEITBFQnJ4G6+r69u2rQ4cOKSQkREuXLlVycrIqV66s1atX6+9//3uulU7NqkqVKlq0aJG6dOlidJRCFRkZqdKlS+daTn/YsGG6du2aZs6caVAyx2nYsKEWL16skJAQo6M41fXr11WmTBmjYzhc48aNNXv27FzPdtq8ebNefvllHTx40KBkjsfDHIuA4vQ02BzXr19XWlqa3csVzJw5U6GhoTp//rz+/e9/q3LlypKk3bt357oMYWZubm4u/+yuHPPnz1fjxo01cOBADRw4UMHBwfrkk09UokQJRUVF2V5mNX36dI0aNUonTpwwOkqhy8rK0oQJE1S9enVVqFDBdrfc2LFjNX/+fIPTOUZSUpK8vLxybff09HS5f2NGYIqAkSNHqkKFCho7dqzRUQrVlStXNHLkSK1YsUIXLlzItd+Vrs3+mVdffVXR0dGmvRV36tSpOnbsmD7++GOXvXwkSe3atfuvjrNYLKad91Mc5qbliI6O1sKFCxUdHa2XXnpJ+/fvV61atbR8+XJNnz5dsbGxRke8Z23atFGZMmX0+eefy9fXV9Ktidr9+vXT9evX//RRA2ZCgTHI7b+xZWdna+HChWrSpIlLPw02IiJCP/74oyZMmKDnnntOM2fO1G+//aY5c+Zo8uTJ6tu3r9ERncbDw0NxcXGmvZ3ziSee0I8//ihvb281atQo1/csd1uZx58tyPf88887KUnhq127tubMmaMOHTqoYsWKio+PV61atXTo0CGFhobq999/NzriPTt69KieeOIJHTlyRAEBAZKkU6dOqU6dOvryyy9dauSUSbwG2bt3r93HxeFpsF9//bUWLVqktm3bqn///nrkkUdUu3ZtBQYGavHixcWqwJj99wYvLy898cQTRseAA7hSQfkzv/32W54/wLOzs5WZmWlAIserXbu2EhISFBMTo0OHDkmSGjRooLCwMJf6eSJRYAzz448/Gh3B6S5evGgbcfDw8LANTT/88MN65ZVXjIyGfLh586batWunjh07ys/Pz+g4cICkpCR99tlnSkpK0ocffigfHx99++23qlGjhho1amR0PIdp2LChNm/enGuxt5UrV7rUJGaLxaKOHTuqTZs2cnd3d7nikoNJvEXApUuX8rzOfPHiRZeZ3CpJtWrVsq3gWr9+fa1YsULSrZGZvCadoWgqVaqUBg0apIyMDKOjwAE2btyo4OBg7dixQ6tWrVJ6erokKT4+XuPHjzc4nWONGzdOgwcP1rvvvqvs7GytWrVKL730kt555x2NGzfO6HgOkZ2dbTdROec915UmKuegwBQBvXv31rJly3JtX7FihXr37m1AosLRv39/xcfHS5JGjRqlmTNnqkyZMho6dKiGDx9ucDrkR8uWLXNdBoU5jRo1Sm+//bZiYmLk5uZm296+fXtt377dwGSO1717d3399df6/vvvVb58eY0bN04HDx7U119/rccee8zoeA7x9ttva8GCBZoyZYrdv2fjxo01b948A5M5HpN4iwBvb29t3bpVDRo0sNt+6NAhtW7dOs87dlzByZMntXv3btWuXdulHvH+37h9AqEZrVixQqNHj9bQoUPVvHlzlS9f3m5/cfv3NLMKFSpo3759CgoKsvu+PHHihOrXr6/r168bHRH5UBwmKudgDkwRkJGRkeeqnpmZmS6zemtmZqY6deqk2bNnq06dOpJuPXSsOD147HbPPvusPDw8jI5R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zrbbXqNGDYMSoSAoMHCqzZs3a86cOUpKStLKlStVvXp1ff755woKCtLDDz9sdLx79ttvv6lNmza6cOGCQkJCJN0atvb19VVMTIwCAgIMTggUX4mJiXrxxRe1bds2u+05k3u5C8lcGNOG0/z73//Wc889p759+2rv3r3KyMiQdOsJzhMnTtQ333xjcMJ7V716dSUkJGjx4sWKj49X2bJl1b9/fz3zzDMqXbq00fGAYu2FF15QqVKltGbNGvn7++d5RxLMgxEYOE1ISIiGDh2qfv362a31snfvXnXu3FkpKSlGRwTgwsqXL6/du3erfv36RkeBAzACA6c5fPiw2rRpk2u7p6enUlNTnR+okCQmJurHH3/M8xr7uHHjDEoFoGHDhvrPf/5jdAw4CAUGTuPn56ejR4+qZs2adtu3bNniMqvufvLJJ3rllVdUpUoV+fn52Q1RWywWCgxgoHfffVcjRozQxIkTFRwcnOuyroeHh0HJUBBcQoLTTJo0Sf/85z/16aef6rHHHtM333yjkydPaujQoRo7dqwiIyONjnjPAgMD9eqrr2rkyJFGRwHwByVK3Fp8/o9zX5jEa06MwMBpRo0apezsbHXo0EFXr15VmzZt5O7urmHDhrlEeZGk33//XU8//bTRMQDk4ccffzQ6AhyIERg43Y0bN3T06FGlp6erYcOGdqtimt2AAQP04IMPatCgQUZHAQCXxggMnM7NzU0NGzY0OkahqF27tsaOHavt27fneY39tddeMygZgBxXr15VcnKybty4Ybe9SZMmBiVCQTACA6e5fv26PvroozveobNnzx6DkjlOUFDQHfdZLBYdO3bMiWkA3O78+fPq37+/vv322zz3MwfGXBiBgdMMGDBA69ev11NPPaWWLVu65CJSx48fNzoCgDsYMmSIUlNTtWPHDrVt21ZffPGFzp49q7fffltTp041Oh7yiREYOI2np6e++eYbtW7d2ugoDhUVFaUJEyaofPnyioqKuuNxFouFN0nAQP7+/vrqq6/UsmVLeXh4aNeuXapbt65Wr16tKVOmaMuWLUZHRD4wAgOnqV69uipWrGh0DIfbu3evMjMzbX++E1cccQLM5MqVK/Lx8ZEkVapUSefPn1fdunUVHBzsEpewixsKDJxm6tSpGjlypGbPnq3AwECj4zjM7bdmcpsmUHTVq1dPhw8fVs2aNdW0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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "#@title Display other symptoms distribution\n",
        "get_distribution_and_display(Globals.cases_and_labels_df, \"other_symptoms_\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 614
        },
        "id": "4BA3uJDlKqNJ",
        "outputId": "338c7047-4fa3-4034-c434-ea154e1bccd0"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Distribution data: {'no_relevant_symptoms': 2841, 'fatigue': 415, 'joint_pain': 300, 'shortness_of_breath': 139, 'chills': 120, 'mouth_sores': 96, 'fever': 90}\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAIwCAYAAACY8VFvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABLb0lEQVR4nO3deVxU9eL/8feAgqgM7iBGuJWKK0YhaqZJYppLWDfTcrdr190k9eZ1q5vmTbPtal0rs6uZ19JSyyVNzS23EFdUXNAULAlwV+D8/vDn1IQt9pU55zCv5+NxHg/nnMP4nimH95zzOZ/jMAzDEAAAgI34mB0AAADgZlFgAACA7VBgAACA7VBgAACA7VBgAACA7VBgAACA7VBgAACA7VBgAACA7RQxO0BBycvL08mTJxUYGCiHw2F2HAAA8AcYhqGzZ88qNDRUPj6/fpyl0BaYkydPKiwszOwYAADgTzh+/Lhuu+22X91eaAtMYGCgpGtvgNPpNDkNAAD4I7KzsxUWFub6Pf5rCm2BuX7ayOl0UmAAALCZ3xv+wSBeAABgOxQYAABgOxQYAABgOxQYAABgOxQYAABgOxQYAABgOxQYAABgOxQYAABgOxQYAABgOxQYAABgOxQYAABgOxQYAABgOxQYAABgOxQYAABgO0XMDmBHlUcuNTvCLXd0UluzIwAA8IdxBAYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANjOTRWYiRMn6u6771ZgYKAqVKigjh07Kjk52W2f5s2by+FwuC39+vVz2yc1NVVt27ZV8eLFVaFCBSUkJCgnJ8dtnzVr1qhhw4by9/dX9erVNWvWrD/3CgEAQKFzUwVm7dq16t+/vzZv3qyVK1fq6tWratWqlc6fP++2X9++fXXq1CnXMnnyZNe23NxctW3bVleuXNHGjRv1/vvva9asWRozZoxrnyNHjqht27Zq0aKFEhMTNWTIEPXp00fLly//P75cAABQGBS5mZ2XLVvm9njWrFmqUKGCtm/frmbNmrnWFy9eXCEhITd8jhUrVmjv3r368ssvFRwcrAYNGuj555/XiBEjNG7cOPn5+WnGjBmqUqWKpkyZIkmqVauW1q9fr1deeUVxcXE3+xoBAEAh838aA5OVlSVJKlOmjNv6OXPmqFy5cqpTp45GjRqlCxcuuLZt2rRJdevWVXBwsGtdXFycsrOztWfPHtc+sbGxbs8ZFxenTZs2/WqWy5cvKzs7220BAACF000dgfm5vLw8DRkyRE2aNFGdOnVc67t06aLw8HCFhoYqKSlJI0aMUHJysj755BNJUlpamlt5keR6nJaW9pv7ZGdn6+LFiwoICMiXZ+LEiRo/fvyffTkAAMBG/nSB6d+/v3bv3q3169e7rX/qqadcf65bt64qVqyoli1bKiUlRdWqVfvzSX/HqFGjNGzYMNfj7OxshYWFFdjfBwAAzPOnTiENGDBAS5Ys0VdffaXbbrvtN/eNjo6WJB06dEiSFBISovT0dLd9rj++Pm7m1/ZxOp03PPoiSf7+/nI6nW4LAAAonG6qwBiGoQEDBmjhwoVavXq1qlSp8rs/k5iYKEmqWLGiJCkmJka7du3S6dOnXfusXLlSTqdTERERrn1WrVrl9jwrV65UTEzMzcQFAACF1E0VmP79++u///2v5s6dq8DAQKWlpSktLU0XL16UJKWkpOj555/X9u3bdfToUX322Wfq1q2bmjVrpnr16kmSWrVqpYiICD355JPauXOnli9frtGjR6t///7y9/eXJPXr10+HDx/Ws88+q/379+vf//635s+fr6FDh97ilw8AAOzopgrM9OnTlZWVpebNm6tixYqu5aOPPpIk+fn56csvv1SrVq1Us2ZNPfPMM+rUqZMWL17seg5fX18tWbJEvr6+iomJ0RNPPKFu3bppwoQJrn2qVKmipUuXauXKlapfv76mTJmimTNncgk1AACQJDkMwzDMDlEQsrOzFRQUpKysrFs+HqbyyKW39Pms4OiktmZHAADgD//+5l5IAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdm6qwEycOFF33323AgMDVaFCBXXs2FHJyclu+1y6dEn9+/dX2bJlVbJkSXXq1Enp6elu+6Smpqpt27YqXry4KlSooISEBOXk5Ljts2bNGjVs2FD+/v6qXr26Zs2a9edeIQAAKHRuqsCsXbtW/fv31+bNm7Vy5UpdvXpVrVq10vnz5137DB06VIsXL9b//vc/rV27VidPnlR8fLxre25urtq2basrV65o48aNev/99zVr1iyNGTPGtc+RI0fUtm1btWjRQomJiRoyZIj69Omj5cuX34KXDAAA7M5hGIbxZ3/4+++/V4UKFbR27Vo1a9ZMWVlZKl++vObOnatHHnlEkrR//37VqlVLmzZtUqNGjfTFF1/ooYce0smTJxUcHCxJmjFjhkaMGKHvv/9efn5+GjFihJYuXardu3e7/q7OnTsrMzNTy5Yt+0PZsrOzFRQUpKysLDmdzj/7Em+o8silt/T5rODopLZmRwAA4A///v4/jYHJysqSJJUpU0aStH37dl29elWxsbGufWrWrKnbb79dmzZtkiRt2rRJdevWdZUXSYqLi1N2drb27Nnj2ufnz3F9n+vPcSOXL19Wdna22wIAAAqnP11g8vLyNGTIEDVp0kR16tSRJKWlpcnPz0+lSpVy2zc4OFhpaWmufX5eXq5vv77tt/bJzs7WxYsXb5hn4sSJCgoKci1hYWF/9qUBAACL+9MFpn///tq9e7fmzZt3K/P8aaNGjVJWVpZrOX78uNmRAABAASnyZ35owIABWrJkidatW6fbbrvNtT4kJERXrlxRZmam21GY9PR0hYSEuPbZsmWL2/Ndv0rp5/v88sql9PR0OZ1OBQQE3DCTv7+//P39/8zLAQAANnNTR2AMw9CAAQO0cOFCrV69WlWqVHHbftddd6lo0aJatWqVa11ycrJSU1MVExMjSYqJidGuXbt0+vRp1z4rV66U0+lURESEa5+fP8f1fa4/BwAA8G43dQSmf//+mjt3rj799FMFBga6xqwEBQUpICBAQUFB6t27t4YNG6YyZcrI6XRq4MCBiomJUaNGjSRJrVq1UkREhJ588klNnjxZaWlpGj16tPr37+86gtKvXz+98cYbevbZZ9WrVy+tXr1a8+fP19Klhe/qHwAAcPNu6gjM9OnTlZWVpebNm6tixYqu5aOPPnLt88orr+ihhx5Sp06d1KxZM4WEhOiTTz5xbff19dWSJUvk6+urmJgYPfHEE+rWrZsmTJjg2qdKlSpaunSpVq5cqfr162vKlCmaOXOm4uLibsFLBgAAdvd/mgfGypgH5uYwDwwAwAo8Mg8MAACAGSgwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdm66wKxbt07t2rVTaGioHA6HFi1a5La9R48ecjgcbkvr1q3d9snIyFDXrl3ldDpVqlQp9e7dW+fOnXPbJykpSffee6+KFSumsLAwTZ48+eZfHQAAKJRuusCcP39e9evX15tvvvmr+7Ru3VqnTp1yLR9++KHb9q5du2rPnj1auXKllixZonXr1umpp55ybc/OzlarVq0UHh6u7du361//+pfGjRunt99++2bjAgCAQqjIzf7Agw8+qAcffPA39/H391dISMgNt+3bt0/Lli3T1q1bFRUVJUl6/fXX1aZNG7388ssKDQ3VnDlzdOXKFb377rvy8/NT7dq1lZiYqKlTp7oVHQAA4J0KZAzMmjVrVKFCBdWoUUNPP/20zpw549q2adMmlSpVylVeJCk2NlY+Pj765ptvXPs0a9ZMfn5+rn3i4uKUnJysH3/88YZ/5+XLl5Wdne22AACAwumWF5jWrVtr9uzZWrVqlV566SWtXbtWDz74oHJzcyVJaWlpqlChgtvPFClSRGXKlFFaWpprn+DgYLd9rj++vs8vTZw4UUFBQa4lLCzsVr80AABgETd9Cun3dO7c2fXnunXrql69eqpWrZrWrFmjli1b3uq/zmXUqFEaNmyY63F2djYlBgCAQqrAL6OuWrWqypUrp0OHDkmSQkJCdPr0abd9cnJylJGR4Ro3ExISovT0dLd9rj/+tbE1/v7+cjqdbgsAACicCrzAnDhxQmfOnFHFihUlSTExMcrMzNT27dtd+6xevVp5eXmKjo527bNu3TpdvXrVtc/KlStVo0YNlS5duqAjAwAAi7vpAnPu3DklJiYqMTFRknTkyBElJiYqNTVV586dU0JCgjZv3qyjR49q1apV6tChg6pXr664uDhJUq1atdS6dWv17dtXW7Zs0YYNGzRgwAB17txZoaGhkqQuXbrIz89PvXv31p49e/TRRx/p1VdfdTtFBAAAvNdNF5ht27YpMjJSkZGRkqRhw4YpMjJSY8aMka+vr5KSktS+fXvdeeed6t27t+666y59/fXX8vf3dz3HnDlzVLNmTbVs2VJt2rRR06ZN3eZ4CQoK0ooVK3TkyBHdddddeuaZZzRmzBguoQYAAJIkh2EYhtkhCkJ2draCgoKUlZV1y8fDVB659JY+nxUcndTW7AgAAPzh39/cCwkAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANgOBQYAANjOTReYdevWqV27dgoNDZXD4dCiRYvcthuGoTFjxqhixYoKCAhQbGysDh486LZPRkaGunbtKqfTqVKlSql37946d+6c2z5JSUm69957VaxYMYWFhWny5Mk3/+oAAEChdNMF5vz586pfv77efPPNG26fPHmyXnvtNc2YMUPffPONSpQoobi4OF26dMm1T9euXbVnzx6tXLlSS5Ys0bp16/TUU0+5tmdnZ6tVq1YKDw/X9u3b9a9//Uvjxo3T22+//SdeIgAAKGwchmEYf/qHHQ4tXLhQHTt2lHTt6EtoaKieeeYZDR8+XJKUlZWl4OBgzZo1S507d9a+ffsUERGhrVu3KioqSpK0bNkytWnTRidOnFBoaKimT5+u5557TmlpafLz85MkjRw5UosWLdL+/fv/ULbs7GwFBQUpKytLTqfzz77EG6o8cuktfT4rODqprdkRAAD4w7+/b+kYmCNHjigtLU2xsbGudUFBQYqOjtamTZskSZs2bVKpUqVc5UWSYmNj5ePjo2+++ca1T7NmzVzlRZLi4uKUnJysH3/88YZ/9+XLl5Wdne22AACAwumWFpi0tDRJUnBwsNv64OBg17a0tDRVqFDBbXuRIkVUpkwZt31u9Bw//zt+aeLEiQoKCnItYWFh//cXBAAALKnQXIU0atQoZWVluZbjx4+bHQkAABSQW1pgQkJCJEnp6elu69PT013bQkJCdPr0abftOTk5ysjIcNvnRs/x87/jl/z9/eV0Ot0WAABQON3SAlOlShWFhIRo1apVrnXZ2dn65ptvFBMTI0mKiYlRZmamtm/f7tpn9erVysvLU3R0tGufdevW6erVq659Vq5cqRo1aqh06dK3MjIAALChmy4w586dU2JiohITEyVdG7ibmJio1NRUORwODRkyRC+88II+++wz7dq1S926dVNoaKjrSqVatWqpdevW6tu3r7Zs2aINGzZowIAB6ty5s0JDQyVJXbp0kZ+fn3r37q09e/boo48+0quvvqphw4bdshcOAADsq8jN/sC2bdvUokUL1+PrpaJ79+6aNWuWnn32WZ0/f15PPfWUMjMz1bRpUy1btkzFihVz/cycOXM0YMAAtWzZUj4+PurUqZNee+011/agoCCtWLFC/fv311133aVy5cppzJgxbnPFAAAA7/V/mgfGypgH5uYwDwwAwApMmQcGAADAEygwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdm55gRk3bpwcDofbUrNmTdf2S5cuqX///ipbtqxKliypTp06KT093e05UlNT1bZtWxUvXlwVKlRQQkKCcnJybnVUAABgU0UK4klr166tL7/88qe/pMhPf83QoUO1dOlS/e9//1NQUJAGDBig+Ph4bdiwQZKUm5urtm3bKiQkRBs3btSpU6fUrVs3FS1aVC+++GJBxAUAADZTIAWmSJEiCgkJybc+KytL77zzjubOnav7779fkvTee++pVq1a2rx5sxo1aqQVK1Zo7969+vLLLxUcHKwGDRro+eef14gRIzRu3Dj5+fkVRGQAAGAjBTIG5uDBgwoNDVXVqlXVtWtXpaamSpK2b9+uq1evKjY21rVvzZo1dfvtt2vTpk2SpE2bNqlu3boKDg527RMXF6fs7Gzt2bPnV//Oy5cvKzs7220BAACF0y0vMNHR0Zo1a5aWLVum6dOn68iRI7r33nt19uxZpaWlyc/PT6VKlXL7meDgYKWlpUmS0tLS3MrL9e3Xt/2aiRMnKigoyLWEhYXd2hcGAAAs45afQnrwwQddf65Xr56io6MVHh6u+fPnKyAg4Fb/dS6jRo3SsGHDXI+zs7MpMQAAFFIFfhl1qVKldOedd+rQoUMKCQnRlStXlJmZ6bZPenq6a8xMSEhIvquSrj++0bia6/z9/eV0Ot0WAABQOBV4gTl37pxSUlJUsWJF3XXXXSpatKhWrVrl2p6cnKzU1FTFxMRIkmJiYrRr1y6dPn3atc/KlSvldDoVERFR0HEBAIAN3PJTSMOHD1e7du0UHh6ukydPauzYsfL19dXjjz+uoKAg9e7dW8OGDVOZMmXkdDo1cOBAxcTEqFGjRpKkVq1aKSIiQk8++aQmT56stLQ0jR49Wv3795e/v/+tjgsAAGzolheYEydO6PHHH9eZM2dUvnx5NW3aVJs3b1b58uUlSa+88op8fHzUqVMnXb58WXFxcfr3v//t+nlfX18tWbJETz/9tGJiYlSiRAl1795dEyZMuNVRAQCATTkMwzDMDlEQsrOzFRQUpKysrFs+HqbyyKW39Pms4OiktmZHAADgD//+5l5IAADAdigwAADAdigwAADAdigwAADAdgrkZo7wHgxoBgCYgSMwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdigwAADAdrgbNXALcFduAPAsjsAAAADbocAAAADbocAAAADbocAAAADbocAAAADbocAAAADbocAAAADbocAAAADbocAAAADbocAAAADbocAAAADbocAAAADbocAAAADbocAAAADbocAAAADbocAAAADbocAAAADbocAAAADbocAAAADbKWJ2AACFR+WRS82OcMsdndTW7AgAboAjMAAAwHY4AgMABYCjUUDB4ggMAACwHQoMAACwHU4hAQAKDKfSUFAoMAAAFDCK3K3HKSQAAGA7FBgAAGA7FBgAAGA7FBgAAGA7FBgAAGA7FBgAAGA7li4wb775pipXrqxixYopOjpaW7ZsMTsSAACwAMsWmI8++kjDhg3T2LFjtWPHDtWvX19xcXE6ffq02dEAAIDJLFtgpk6dqr59+6pnz56KiIjQjBkzVLx4cb377rtmRwMAACaz5Ey8V65c0fbt2zVq1CjXOh8fH8XGxmrTpk03/JnLly/r8uXLrsdZWVmSpOzs7FueL+/yhVv+nGb7s+8T78U1vA/X8D78hPfiGt6Ha3gfbv55DcP47R0NC/ruu+8MScbGjRvd1ickJBj33HPPDX9m7NixhiQWFhYWFhaWQrAcP378N7uCJY/A/BmjRo3SsGHDXI/z8vKUkZGhsmXLyuFwmJjsz8vOzlZYWJiOHz8up9NpdhzT8D78hPfiGt6Ha3gfruF9+ElheC8Mw9DZs2cVGhr6m/tZssCUK1dOvr6+Sk9Pd1ufnp6ukJCQG/6Mv7+//P393daVKlWqoCJ6lNPptO3/iLcS78NPeC+u4X24hvfhGt6Hn9j9vQgKCvrdfSw5iNfPz0933XWXVq1a5VqXl5enVatWKSYmxsRkAADACix5BEaShg0bpu7duysqKkr33HOPpk2bpvPnz6tnz55mRwMAACazbIF57LHH9P3332vMmDFKS0tTgwYNtGzZMgUHB5sdzWP8/f01duzYfKfGvA3vw094L67hfbiG9+Ea3oefeNN74TCM37tOCQAAwFosOQYGAADgt1BgAACA7VBgAACA7VBgAACA7VBgAACA7Vj2MmogJydHa9asUUpKirp06aLAwECdPHlSTqdTJUuWNDueR6xatUqrVq3S6dOnlZeX57aNO7N7p4sXL8owDBUvXlySdOzYMS1cuFARERFq1aqVyengSVevXlVAQIASExNVp04ds+N4HAXGYvhwuubYsWNq3bq1UlNTdfnyZT3wwAMKDAzUSy+9pMuXL2vGjBlmRyxw48eP14QJExQVFaWKFSva9p5et1JeXp4OHTp0w0LXrFkzk1J5VocOHRQfH69+/fopMzNT0dHRKlq0qH744QdNnTpVTz/9tNkRTZWZmVlobiPze4oWLarbb79dubm5Zkcxx624ezRunQceeMCYPn26YRiG8eOPPxrBwcHGbbfdZhQrVsz497//bXI6z+nQoYPxxBNPGJcvXzZKlixppKSkGIZhGF999ZVRvXp1k9N5RkhIiDF79myzY1jGpk2bjCpVqhg+Pj6Gw+FwW3x8fMyO5zFly5Y1du/ebRiGYfznP/8x6tWrZ+Tm5hrz5883atasaXI6z5o0aZIxb9481+NHH33U8PHxMUJDQ43ExEQTk3nOzJkzjTZt2hhnzpwxO4rHMQbGYnbs2KF7771XkrRgwQIFBwfr2LFjmj17tl577TWT03nO119/rdGjR8vPz89tfeXKlfXdd9+ZlMqzrly5osaNG5sdwzL69eunqKgo7d69WxkZGfrxxx9dS0ZGhtnxPObChQsKDAyUJK1YsULx8fHy8fFRo0aNdOzYMZPTedaMGTMUFhYmSVq5cqVWrlypL774Qg8++KASEhJMTucZb7zxhtatW6fQ0FDVqFFDDRs2dFsKM04hWQwfTtfk5eXd8LDoiRMnXO9PYdenTx/NnTtX//jHP8yOYgkHDx7UggULVL16dbOjmKp69epatGiRHn74YS1fvlxDhw6VJJ0+fdrWdx/+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\n"
          },
          "metadata": {}
        }
      ]
    }
  ]
}